#include <iostream>
#include <string>

template<class T>
class generic_arr {

	public:
	size_t get_size() const {
		return size;
	}
	size_t get_capacity() const {
		return capacity;
	}
	T& operator[](size_t index) const {
		if(index >= size)
		{
			return arr_data[0];
			std::cout << "Index out of bounds" << std::endl;
		}
		return arr_data[index];
	}
	generic_arr(size_t sz) :size(sz)
	{
		arr_data = new T[sz];
		capacity = 0;
	}

	~generic_arr() {
		delete[] arr_data;
	}

	private : 
	T* arr_data;
	size_t size;
	size_t capacity;
};